package edu.algo3.algoThief.dao;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.jdom2.Element;

public class DatosObjetosRobados extends repositorioXML {

	private static String nombreDocumentoXML = "datos/pistas/xml/datosObjetosRobados.xml";
	
	protected DatosObjetosRobados()
	{
		
	}
	
	protected static ArrayList<String> getListaNombres(String valorObjeto)
	{
		parseDocumento(nombreDocumentoXML);
		ArrayList<String> listaDeObjetos = new ArrayList<String>();
		
		List<Element> listaValores = racine.getChildren("valor");
		Iterator<Element> i1 = listaValores.iterator();
		while(i1.hasNext())
		{
			Element valor = (Element)i1.next();
			if(valor.getAttribute("valorObjeto").getValue().equals(valorObjeto)) // no se puede hacer un switch con stringd en esa version de JDE
			{
				List<Element> listaObjetos = valor.getChildren("objeto");
				Iterator<Element> i2 = listaObjetos.iterator();
				while(i2.hasNext())
				{
					Element objeto = (Element)i2.next();
					Element nombreObjeto = objeto.getChild("nombre");
					listaDeObjetos.add(nombreObjeto.getText());
				}
			}
		}
		return listaDeObjetos;
	}
	
	private static ArrayList<String> getListaNombres()
	{
		parseDocumento(nombreDocumentoXML);
		ArrayList<String> listaDeObjetos = new ArrayList<String>();
		
		List<Element> listaValores = racine.getChildren("valor");
		Iterator<Element> i1 = listaValores.iterator();
		while(i1.hasNext())
		{
			Element valor = (Element)i1.next();
			List<Element> listaObjetos = valor.getChildren("objeto");
			Iterator<Element> i2 = listaObjetos.iterator();
			while(i2.hasNext())
			{
				Element objeto = (Element)i2.next();
				Element nombreObjeto = objeto.getChild("nombre");
				listaDeObjetos.add(nombreObjeto.getText());
			}
			
		}
		return listaDeObjetos;
	}
	
	protected static String getDescipcionDe(String nombreObjeto)
	/* 	1/ generar la lista de todas las descipciones
	 * 	2/ llamar la lista de todos los nombres y buscar el deseado
	 * 	3/ sacar la descipcion del objeto al indice que corresponde
	 */	
	{
		parseDocumento(nombreDocumentoXML);
		String descripcion;
		
		ArrayList<String> listaDeDescripciones = new ArrayList<String>();
		ArrayList<String> listaDeNombres = getListaNombres();
		int indiceBuscado = 0;
		
		List<Element> listaValores = racine.getChildren("valor");
		Iterator<Element> i1 = listaValores.iterator();
		while(i1.hasNext())
		{
			Element valor = (Element)i1.next();
			List<Element> listaObjetos = valor.getChildren("objeto");
			Iterator<Element> i2 = listaObjetos.iterator();
			while(i2.hasNext())
			{
				Element objeto = (Element)i2.next();
				Element descripcionObjeto = objeto.getChild("descripcion");
				listaDeDescripciones.add(descripcionObjeto.getText());
			}
		}
		
		for(int i3 = 0; i3 <= listaDeNombres.size()-1; i3++)
		{
			if(listaDeNombres.get(i3).equals(nombreObjeto)) 
			{
				indiceBuscado = i3;
			}
		}
		
		descripcion = listaDeDescripciones.get(indiceBuscado);
		
		return descripcion;
	}
	
}
